import axios from "axios";
import { ElMessage } from "element-plus";

import { useRouter } from 'vue-router'
const router = useRouter()


// 创建 Axios 实例
const Interceptor = axios.create({
    baseURL: import.meta.env.VITE_API_BASE_URL,
    timeout: 5000, // 设置超时时间为 5 秒
    withCredentials: true // 允许携带凭证
});




// 请求拦截器
Interceptor.interceptors.request.use(
    (config) => {
        // 从 localStorage 中获取 token
        const token = localStorage.getItem('TOKEN');
        // const token = "66666";


        if (token) {
            // 在请求头中添加 token
            config.headers['token'] = token;
        }
        return config;
    },
    (error) => {
        // 请求错误处理
        return Promise.reject(error);
    }
);




//响应拦截器
Interceptor.interceptors.response.use((response) => {


    let msg = '';
    let status = response.data.code;


    if (response.data.code === 401) {
    
                msg = "token过期,请重新登录";
                localStorage.removeItem("TOKEN")
                console.log('TOKEN 已删除？', localStorage.getItem("TOKEN")) // 应该为 null
                localStorage.removeItem("username")
                setTimeout(function () {

                    history.go(0); // 重新加载页面
                  }, 1000); // 等待 3 秒后刷新页面

        ElMessage({
            type: 'error',
            message: msg
        })


    }




    return response.data;
}, (error) => {
    //处理网络错误
    let msg = '';
    let status = error.response.status;
    switch (status) {
        case 401:
            msg = "token过期,请重新登录";
            localStorage.removeItem("TOKEN")
            setTimeout(function () {

                history.go(0); // 重新加载页面
              }, 1000); // 等待 3 秒后刷新页面
            break;
        case 403:
            msg = '无权访问';
            break;
        case 404:
            msg = "请求地址错误";
            break;
        case 500:
            msg = "服务器出现问题";
            break;
        default:
            msg = "无网络";


    }
    ElMessage({
        type: 'error',
        message: msg
    })
    return Promise.reject(error);
});
export default Interceptor;